<?php 
namespace Home\Model;

use \Think\Model\RelationModel;

class UserModel extends RelationModel
{
    protected $_validate = array(
        // array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),
        array('name','require','名字不能为空'),//有待测试
        array('name','','用户名称已经存在！',0,'unique',1),
        array('tel','/^1[3|4|5|7|8]\d{9}$/','手机不准确',0,'regex',1),
        array('repassword','password','密码不一致',0,'confirm'),
        array('pass','/^\w{6,32}/','密码格式不正确',0,'regex',1),
    );

    protected $_auto = array(
        // array(验证字段1,完成规则,[完成条件,附加规则]),
        // array('regtime',"date('Y-m-d H:i:s')",1,'function'),
        array('pass','md5',3,'function'),
        array('pass','',2,'ignore'),
        array('regtime','regdate',1,'callback'),
    );

    protected $_link = array(
        // 'lover' => self::MANY_TO_MANY,
        'question' => array(
            'mapping_type' => self::MANY_TO_MANY,
            'class_name' => 'question',
            'condition' => 'display = 1',
            'mapping_order' => 'datetime DESC',
            // 'mapping_limit' => 3,
            // 'condition' => 'display = 1 AND attend_num > 2',//条件是这么这写的 condition condition condition 重要的事情说三遍
        //     // 'mapping_name' => 'lover',//这是默认 关联表数据的键名
        //     // 'foregin_key' => 'user_id',//没卵用  不知道嘛用
        //     // 'mapping_fields' => 'name', //关联表的字段  不知道怎么表达显示多个 默认是全部
        //     // 'mapping_fields' => 'sex', //关联表的字段  不知道怎么表达显示多个 默认是全部
        ),

        // 'lover' => self::MANY_TO_MANY,
        'userinfo' => array(
            'mapping_type' => self::HAS_ONE,
            'class_name' => 'userinfo',
            // 'mapping_limit' => 3,
            // 'condition' => 'display = 1 AND attend_num > 2',//条件是这么这写的 condition condition condition 重要的事情说三遍
            // 'mapping_name' => 'lover',//这是默认 关联表数据的键名
            'foregin_key' => 'id',//关联的字段名
            // 'mapping_fields' => 'name', //关联表的字段  不知道怎么表达显示多个 默认是全部
            // 'mapping_fields' => 'sex', //关联表的字段  不知道怎么表达显示多个 默认是全部
        ),

        'answer' => array(
            'mapping_type' => self::HAS_MANY,
            'class_name' => 'answer',
            'condition' => 'display = 1',
            'mapping_order' => 'datetime DESC',
            // 'mapping_limit' => 3,
            // 'condition' => 'display = 1 AND attend_num > 2',//条件是这么这写的 condition condition condition 重要的事情说三遍
        //     // 'mapping_name' => 'lover',//这是默认 关联表数据的键名
        //     // 'foregin_key' => 'user_id',//没卵用  不知道嘛用
        //     // 'mapping_fields' => 'name', //关联表的字段  不知道怎么表达显示多个 默认是全部
        //     // 'mapping_fields' => 'sex', //关联表的字段  不知道怎么表达显示多个 默认是全部
        ),

        'article' => array(
            'mapping_type' => self::HAS_MANY,
            'class_name' => 'article',
            'condition' => 'display = 1',
            'mapping_order' => 'datetime DESC',
            // 'mapping_limit' => 3,
            // 'condition' => 'display = 1 AND attend_num > 2',//条件是这么这写的 condition condition condition 重要的事情说三遍
        //     // 'mapping_name' => 'lover',//这是默认 关联表数据的键名
        //     // 'foregin_key' => 'user_id',//没卵用  不知道嘛用
        //     // 'mapping_fields' => 'name', //关联表的字段  不知道怎么表达显示多个 默认是全部
        //     // 'mapping_fields' => 'sex', //关联表的字段  不知道怎么表达显示多个 默认是全部
        ),


        'topics' => array(
            'mapping_type' => self::MANY_TO_MANY,
            'class_name' => 'topics',
            'mapping_name' => 'ut',
            'foreign_key' => 'user_id',
            'relation_foreign_key' => 'topic_id',
            'relation_table' => 'zhihu_user_topic',
             //此处应显式定义中间表名称，且不能使用C函数读取表前缀
            )

    );



    protected function regdate()
    {
        return date("Y-m-d H:i:s");
    }
}





